Skip to content

Comments

feat: add models#19

Merged
khoshov merged 5 commits intodevelopfrom
feature/django-models
Jun 5, 2025
Merged

feat: add models#19
khoshov merged 5 commits intodevelopfrom
feature/django-models

Conversation

@nikshirokov
Copy link
Collaborator

No description provided.

Merge branch 'feature/django-models' of github.com:khoshov/pythonbooks into feature/django-models
User = get_user_model()


class Publisher(models.Model):
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TimeStampedModel


class Publisher(models.Model):
name = models.CharField(max_length=255, verbose_name="Название издательства")
website = models.URLField(
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Отформатировать порядок передачи аргументов

return self.name


class Book(models.Model):
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вот несколько предложений по улучшению названий полей в модели Book:

  1. authorauthors (поскольку это ManyToManyField, лучше использовать множественное число)
  2. publication_datepublished_at (более стандартное название для дат)
  3. isbnisbn_code (более явное название)
  4. pagespage_count или total_pages (более описательно)
  5. cover_imagecover_image_url (явнее указывает, что это URL)
  6. parsed_atcreated_at (более стандартное название для времени создания)

Также можно рассмотреть:

  • descriptionsummary (если это краткое описание)
  • languagelanguage_code (если хранится код языка)

Измененная модель могла бы выглядеть так:

class Book(models.Model):
    authors = models.ManyToManyField(Author, related_name="books", verbose_name="Авторы")
    publisher = models.ForeignKey(
        Publisher,
        on_delete=models.CASCADE,
        related_name="books",
        verbose_name="Издательство",
    )
    title = models.CharField(max_length=255, verbose_name="Название книги")
    summary = models.TextField(verbose_name="Описание книги")
    published_at = models.DateField(verbose_name="Дата публикации")
    isbn_code = models.CharField(max_length=20, verbose_name="ISBN")
    page_count = models.IntegerField(verbose_name="Количество страниц")
    cover_image_url = models.URLField(max_length=255, verbose_name="Обложка книги")
    language_code = models.CharField(max_length=50, verbose_name="Язык")
    tags = models.ManyToManyField(Tag, related_name="books", verbose_name="Теги")
    created_at = models.DateTimeField(auto_now_add=True, verbose_name="Дата создания")

    class Meta:
        verbose_name = "Книга"
        verbose_name_plural = "Книги"

    def __str__(self):
        return self.title

Эти изменения делают названия более явными и соответствуют common conventions в Django.

Copy link
Owner

@khoshov khoshov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need work

@khoshov khoshov merged commit 72ac866 into develop Jun 5, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants